package mx.itesm.pruebadmescenas;

import org.andengine.engine.Engine;
import org.andengine.engine.camera.hud.HUD;
import org.andengine.entity.primitive.Rectangle;
import org.andengine.entity.text.Text;
import org.andengine.opengl.font.Font;
import org.andengine.opengl.font.FontFactory;

import android.graphics.Typeface;
/**
 * Esta clase sirve para mostrar el estado del juego en pantalla, la ventaja
 * es que siempre está en primer plano
 * 
 * @author rmroman
 *
 */
public class EstadoJuego extends HUD 
{
	// Variables con el estado del juego
	private int marcador;
	private float tiempo;
	private Engine engine;
	// Objetos que se agregan a la escena (muestran el estado)
	private Text txtMarcador;
	private Text txtTiempo;

	// Constructor, crea la HUD
	public EstadoJuego(int marcador, Engine engine) {
		this.marcador = marcador;
		this.engine = engine;
		tiempo=0;
		agregarMarcador();
	}
	
	public int getMarcador() {
		return marcador;
	}

	// Actualiza el marcador
	public void aumentarMarcador(int puntos) {
		marcador += puntos;
		txtMarcador.setText("Puntos: " + marcador);
	}
	
	// Actualiza el tiempo
	public void actualizarTiempo(float dt) {
		tiempo += dt;	// Acumula el tiempo
		int segundos = (int)tiempo;	// Si la cuenta es regresiva, restar del total el tiempo
		txtTiempo.setText("Tiempo: " + segundos/60 + ":" + segundos%60); // Falta formatear
	}

	// Agrega los títulos
	private void agregarMarcador() {
		// Fondo transparente
		Rectangle cuadro = new Rectangle(ProyectoJuego.ANCHO_CAMARA - 150,
				ProyectoJuego.ALTO_CAMARA - 32, 300, 128,
				engine.getVertexBufferObjectManager());
		cuadro.setColor(0, 0, 0, 0.5f);	// El 4to parámetro es la transparencia
		this.attachChild(cuadro);

		// Crea el tipo de letra
		Font tipoLetra = FontFactory.create(engine.getFontManager(),
				engine.getTextureManager(), 256, 256,
				Typeface.create(Typeface.MONOSPACE, Typeface.NORMAL), 24f, true, 0xFFFFFFFF);
		tipoLetra.load();
		tipoLetra.prepareLetters("TiempoPuntos: 1234567890.".toCharArray());
		
		// Crea el letrero del marcador
		txtMarcador = new Text(ProyectoJuego.ANCHO_CAMARA - 150,
				ProyectoJuego.ALTO_CAMARA - 32, tipoLetra, "Puntos: "
						+ marcador, 13, engine.getVertexBufferObjectManager());
		// Crea el letrero del tiempo
		txtTiempo = new Text(ProyectoJuego.ANCHO_CAMARA - 150,
				ProyectoJuego.ALTO_CAMARA - 64, tipoLetra, "Tiempo: "
						+ tiempo, 20, engine.getVertexBufferObjectManager());
		
		this.attachChild(txtMarcador);
		this.attachChild(txtTiempo);
	}
}
